<?php


namespace app\privatearea\controller\v1;


use app\common\cachemodel\Recode as RecodeAlias;
use app\privatearea\controller\Auth;
use think\Db;

class Recode extends Auth
{
    /**
     * 获取档案列表
     */
    public function getList()
    {
        $uid = $this->user['id'];

        $data = Db::table('app_recode')->alias('r')
            ->join('app_recode_astro ra', 'r.id=ra.rid', 'INNER')
            ->field('r.id,r.name,r.type,r.year,r.month,r.day,r.hour,r.minute,r.timezone,birth_country,birth_province,birth_city,live_country,live_province,live_city,comments,isself,long_deg,long_min,ew,lat_deg,lat_min,ns,avatar,is_summer,uid,aid,sun,moon,merc,venu,mars,jupi,satu,non,lili,juno,asc,mc')
            ->where(['uid' => $uid, 'status' => 1])
            ->select();

        return json(['code' => 200, 'data' => $data, 'msg' => 'ok']);
    }

    /**
     * 添加或编辑档案
     */
    public function recodeAddOrEdit()
    {
        $name = input('name/s', '', 'htmlspecialchars');// 档案名称
        $type = input('type/d');// 档案类型  1男 | 2 女 | 3 男同 | 4 女同 | 5 事件 | 6 卜卦
        $year = input('year/d');// 出生时间-年
        $month = input('month/d');// 出生时间-月
        $day = input('day/d');// 出生时间-日
        $hour = input('hour/d');// 出生时间-时
        $minute = input('minute/d');// 出生时间-分
        $birth_country = input('birth_country/s', '', 'htmlspecialchars');// 出生地点-省
        $birth_province = input('birth_province/s', '', 'htmlspecialchars');// 出生地点-市
        $birth_city = input('birth_city/s', '', 'htmlspecialchars');// 出生地点-区
        $live_country = input('live_country/s', '', 'htmlspecialchars');// 现居地-省
        $live_province = input('live_province/s', '', 'htmlspecialchars');// 现居地-省
        $live_city = input('live_city/s', '', 'htmlspecialchars');// 现居地-省
        $comments = input('comments/s', '', 'htmlspecialchars');// 档案标签如 自己 朋友 案例
        $isself = input('isself/d', 0);// 档案是否为自己 0 否 | 1 是（自己的档案无法删除，无法更改为其他标签）
        $long_deg = input('long_deg/d');// 经度-度
        $long_min = input('long_min/d');// 经度-分
        $ew = input('ew/d');// 东经|西经 1|-1
        $lat_deg = input('lat_deg/d');// 纬度-度
        $lat_min = input('lat_min/d');// 纬度-分
        $ns = input('ns/d');// 南纬北纬  1|-1
        $rid = input('rid', '');
        $resMsg = $rid ? '更新' : '创建';
        $avatar = input('avatar/s', '');// 头像地址后缀

        $is_summer = 0;
        // 只判断大陆地区的夏令时
        if (!in_array($birth_country, ['香港特别行政区', '澳门特别行政区', '台湾省', '北美洲', '大洋洲', '非洲', '南美洲', '欧洲', '亚洲', '']))
        {
            $is_summer = isSummerTime($hour, $minute, 0, $month, $day, $year) ? 1 : 0;// 是否开启夏令时
        }
        if (($isself === 1 && $comments !== '自己') || ($comments === '自己' && $isself !== 1))
        {
            return show(config('code.error'), '服务异常，请稍后重试');
        }

        $data = [
            'uid' => (int)$this->user['id'],
            'name' => $name,
            'type' => $type,
            'year' => $year,
            'month' => $month,
            'day' => $day,
            'hour' => $hour,
            'minute' => $minute,
            'birth_country' => $birth_country,
            'birth_province' => $birth_province,
            'birth_city' => $birth_city,
            'live_country' => $live_country,
            'live_province' => $live_province,
            'comments' => $comments,
            'isself' => $isself,
            'live_city' => $live_city,
            'long_deg' => $long_deg,
            'long_min' => $long_min,
            'ew' => $ew,
            'lat_deg' => $lat_deg,
            'lat_min' => $lat_min,
            'ns' => $ns,
            'avatar' => $avatar,
            'timezone' => 8,//app没有选择时区的地方，默认为8，需要前端进行提示
            'is_summer' => $is_summer
        ];

        // 已登陆
        if ($rid)
        {   // 更新档案
            if ($isself === 1 && $this->user['rid'] && $rid != $this->user['rid'])
            {
                return show(config('code.error'), '服务异常，请稍后重试');
            }
            (new RecodeAlias())->recodeEdit($rid, $data);
        } else
        {
            if ($isself === 1 && $this->user['rid'])
            {
                return show(config('code.error'), '请勿重复添加自己的档案～');
            }

            // 添加档案
            $recodeInfo = (new RecodeAlias())->miniappRecodeAdd($data, '私域H5');
            $rid = $recodeInfo['id'];
        }

        return show(config('code.success'), '档案' . $resMsg . '成功', ['rid' => $rid]);
    }
}
